package com.zw.pdm.module.afterSale.mapper;



import com.zw.pdm.entity.sys.User;
import com.zw.pdm.module.afterSale.model.CheckModel;
import com.zw.pdm.module.afterSale.model.FileModel;
import com.zw.pdm.module.afterSale.model.ProjectModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;


@Repository
public interface CheckDao {

    /**
     * 查询待发起验收列表
     */
    List<ProjectModel> selectUnCheckList(ProjectModel projectModel);

    /**
     * 查询已发起验收列表
     */
    List<ProjectModel> selectCheckList(ProjectModel projectModel);

    /**
     * 待审核验收列表
     */
    List<ProjectModel> selectCheckExamineList(ProjectModel projectModel);


    /**
     * 验收单查询页面
     */
    List<ProjectModel> queryList(ProjectModel projectModel);

    /**
     * 根据项目id 在验收单据表中生成一条记录
     */
    int insertNewCheck(CheckModel model);


    /**
     * 更新项目表是否发起验收状态值
     */
    void updateProjectCheckStatus(Integer proId);

    /**
     * 根据项目id查询项目基本信息
     */
    ProjectModel selcetProInfoByProId(Integer proId);

    /**
     * 新增验收单明细记录
     */
    int addDetail(CheckModel checkModel);

    /**
     * 查询验收单明细
     */
    int selectDetailByCheckId(int cId);

    /**
     * 技术资料说明表新增一条记录
     */
    int addTechnical(FileModel fileModel);

    /**
     * 上传附件1
     */
    int addFileInfo(FileModel fileModel);

    /**
     * 上传附件2
     */
    int addFileInfo2(FileModel fileModel);

    /**
     * 查询验收明细
     */
    CheckModel selectCheckDetailByProId(Integer proId);

    /**
     * 查询技术资料说明列表
     */
    List<FileModel> selectTechByDetailId(int checkDetailId);

    /**
     * 查询附件信息
     */
    List<FileModel> selectFileInfoByDetailId(@Param("checkDetailId") int checkDetailId, @Param("fileType") int fileType);

    /**
     * 根据checkId 查询checkDetailId
     */
    Integer selectCheckDetailByCheckId(int checkId);


    /**
     * 根据checkid 修改明细表数据
     */
    void updateDetailByCheckId(CheckModel checkModel);

    /**
     * 删除技术资料表 数据
     */
    void deleteTechByDetailId(int checkDetailId);

    /**
     * 删除附件
     */
    int delFileById(Integer fileId);

    /**
     * 修改验收单状态
     */
    int updateCheckStatusById(@Param("checkId") int checkId, @Param("i") int i);

    /**
     * 验收单提交
     */
    int submitCheck(Integer proId);

    /**
     * 审核信息 插入
     */
    void updateExamineInfoByCheckId(@Param("checkId") int checkId, @Param("eqAuditOpinoin") String eqAuditOpinoin, @Param("Name") String Name);

    /**
     * 驳回信息
     */
    CheckModel selectBoHuiInfoByProId(Integer proId);

    /**
     * 技术资料列表
     */
    List<ProjectModel> selectTechList(ProjectModel projectModel);

    /**
     * 修改技术文件上传状态
     */
    int updateProTechStatus(int proId);

    /**
     * 技术协议附件列表
     */
    List<FileModel> selectAnnexList(int proId);

    /**
     * 保存  是否需要技术协议
     */
    int techIsNeedSave(@Param("proId") int proId, @Param("proTechAgreement") int proTechAgreement);

    int queryCount(@Param("fileId") Integer fileId, @Param("i") Integer i);

    int queryProId(Integer fileId);

    void updateTechStatus(int proId);

    String queryProCodeByProId(String proId);

    int queryFileCount(@Param("mainId") int mainId, @Param("fileType") int fileType);

    void updateStatus(@Param("proId") Integer proId, @Param("type") String type, @Param("status") int status);

    int selectProIdByCheckId(Integer checkId);

    void updateAcceptanceStatus(@Param("proId") Integer proId, @Param("status") int status);

    void updateAcceptanceOverTime(int proId);

    void updateTechnicalStatus(@Param("proId") Integer proId, @Param("status") int status);

    void updateTechnicalOverTime(int proId);

    User getUserByName(String director);
}
